/********************************************
 * 功能说明: JSON工具类
 * 模块名称: 工具模块
 * 系统名称: java敏捷开发通用平台
 * 软件版权:
 * 系统版本: 1.0.0
 * 开发人员: zhaorq
 * 开发时间: 2017年6月13日 上午11:17:51
 * 审核人员:
 * 相关文档:
 * 修改记录: 修改日期 修改人员 修改说明
 *********************************************/
package com.hyacinth.utils.json;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.util.*;

/**
 * JSON工具类
 * @author zhaorq
 * @verion 1.0.0.1
 */
public class JsonUtils {

	public static void main(String[] args) {
		String jsonStr = "{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"}";
		Map<String, Object> map = JsonUtils.toMap(jsonStr);
		System.out.println(map.get("name"));
	}
	
	public static JSONObject toJson(Object obj) {
		return JSONObject.fromObject(obj);
	}
	
	public static String toString(Object obj) {
		return JsonMapper.toJsonString(obj);
	}

	public static Map<String, Object> toMap(Object obj) {
		Map<String, Object> map = new HashMap<String, Object>();
		JSONObject json = JSONObject.fromObject(obj);
		Iterator<?> it = json.keys();
		while (it.hasNext()) {
			String key = (String) it.next();
			String value = json.get(key).toString();
			if (value.startsWith("{")) {
				map.put(key, toMap(value));
			} else if (value.startsWith("[")) {
				JSONArray array = JSONArray.fromObject(value);
				List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
				for (int i = 0; i < array.size(); i++) {
					list.add(toMap(array.get(i)));
				}
				map.put(key, list);
			} else {
				map.put(key, value);
			}

		}
		return map;
	}

}
